Computer systems typically include a central processing unit (CPU) and a main memory. The speed at which the CPU decodes and executes instructions to process data typically exceeds the speed at which instructions and operands are transferred between the main memory and the CPU. In an attempt to reduce the problems caused by this mismatch, computers typically implement a cache, which are employed to temporarily hold those portions of the contents of the main memory that are believed to be currently in use by the CPU. The main purpose of caches is to shorten the time necessary to perform memory accesses, either for data or instruction fetch because information located in caches may be accessed in much less time than that located in the main memory.